(deftemplate intrebare
    (slot stringIntrebare)
    (slot raspuns)
)
(deftemplate animalPreferat
	(slot nume)
)

(assert (intrebare (stringIntrebare nil)(raspuns nil)))

(defrule q1
	(intrebare (stringIntrebare nil)(raspuns nil))
	=>
	(printout t "Este un animal mare ? (da/nu)" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Este un animal mare")(raspuns ?r)))
)
(defrule q2
	(intrebare (stringIntrebare "Este un animal mare")(raspuns da))
	=>
	(printout t "Mananca soareci ? (da/nu)" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Mananca soareci")(raspuns ?r)))
)
(defrule q3
	(intrebare (stringIntrebare "Este un animal mare")(raspuns nu))
	=>
	(printout t "Mananca alune ? (da/nu)" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Mananca alune")(raspuns ?r)))
)
(defrule q4
	(intrebare (stringIntrebare "Mananca soareci")(raspuns nu))
	=>
    (printout t "Stie sa inoate ? (da/nu)" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Stie sa inoate")(raspuns ?r)))
)
(defrule q5
	(intrebare (stringIntrebare "Stie sa inoate")(raspuns nu))
	=>
	(printout t "Este ierbivor ? (da/nu)" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Este ierbivor")(raspuns ?r)))
)
(defrule q6
	(intrebare (stringIntrebare "Este ierbivor")(raspuns nu))
	=>
	(printout t "Apara casa ? (da/nu)" crlf)
	(bind ?r (read))
	(assert (intrebare (stringIntrebare "Apara casa")(raspuns ?r)))
)
(defrule q7
	(intrebare (stringIntrebare "Apara casa")(raspuns da))
	=>
	(printout t "Animalul preferat este un caine." crlf)
)

(defrule veverita
	(intrebare (stringIntrebare "Mananca alune")(raspuns da))
	=>
	(printout t "Animalul preferat este o veverita." crlf)
)
(defrule soarece
	(intrebare (stringIntrebare "Mananca alune")(raspuns nu))
	=>
	(printout t "Animalul preferat este un soricel." crlf)
)
(defrule pisica
	(intrebare (stringIntrebare "Mananca soareci")(raspuns da))
	=>
	(printout t "Animalul preferat este o pisica." crlf)
)
(defrule ratusca
	(intrebare (stringIntrebare "Stie sa inoate")(raspuns da))
	=>
	(printout t "Animalul preferat este o ratusca." crlf)
)
(defrule cal
	(intrebare (stringIntrebare "Este ierbivor")(raspuns da))
	=>
	(printout t "Animalul preferat este un cal." crlf)
)

(facts)
(run)